home *** CD-ROM | disk | FTP | other *** search
/ Shareware Grab Bag / Shareware Grab Bag.iso / 090 / dumps.arc / HEXDUMP.C < prev   
Text File  |  1985-12-12  |  5KB  |  115 lines

  1. /****************************************************************************/
  2. /*                                                                          */
  3. /* HEXDUMP.C                                                                */
  4. /*                                                                          */
  5. /* This program prints the HEX values and actual text for the file          */
  6. /* specified as the first command line argument. It reads the file a block  */
  7. /* at a time and prints the decimal value of each character, then prints    */
  8. /* the translated characters at the end of the line. It translates certain  */
  9. /* special characters like BELL, LF, FF to spaces for printing              */
  10. /*                                                                          */
  11. /* Written by: Jim Niederriter   12/26/83                                   */
  12. /*                                                                          */
  13. /****************************************************************************/
  14. /*                                                                          */
  15. /* This program was written for the Lattice `C' Compiler, and works under   */
  16. /* version 1.04 or 2.00.                                                    */
  17. /*                                                                          */
  18. /****************************************************************************/
  19.  
  20. #include <stdio.h>
  21. #define  BELL   7
  22. #define  MAXCHR 40
  23. #define  NULL   0
  24.      
  25. main(argc, argv)
  26. int argc;
  27. char *argv[];
  28. {
  29.      int loopx, linecnt;
  30.      int x, f1, stats, flag, fmode;
  31.      long countr;
  32.      char buffer[MAXCHR + 1];
  33.      FILE *f2, *fopen();
  34.  
  35. /****** Looks for filename as first command line argument *******************/
  36.  
  37.      if (argc < 2)
  38.      {
  39.           puts("Requires file name in command line\n");
  40.           putch(BELL);
  41.           exit(1);
  42.      }
  43.  
  44. /****** Opens printer as LPT1 ***********************************************/
  45.  
  46.      if ((f2 = fopen("LPT1:", "w")) == NULL)
  47.      {
  48.           puts("Can't open printer file\n");
  49.           putch(BELL);
  50.           exit(1);
  51.      }
  52. /****** Open file as read-only, and in `untranslated' mode...(does not   */
  53. /****** convert CR/LF). *************************************************/
  54.  
  55.      fmode = 0;          /* mode for `read-only' */
  56.      fmode = 0x8000;     /* set to read in `untranslated' or binary mode */
  57.      
  58.      if ((f1 = open(argv[1], fmode)) == NULL)
  59.      {
  60.           printf("Can't open file %s.\n", argv[1]);
  61.           putch(BELL);
  62.           exit(1);
  63.      }
  64. /***** Printer codes are set up for EPSON FX (change to match your printer */
  65.  
  66.      fprintf(f2, "\x1BP\x0F");     /* set printer to PICA, CONDENSED  */
  67.  
  68. /**** This one sets the `skip over perforation' to 3 lines *****************/
  69.  
  70.      fprintf(f2, "\x1BN\x03\nCount                              File ");
  71.      fprintf(f2, "dump for file name: %s \n", argv[1]);
  72.      
  73.      countr = loopx = linecnt = 0;
  74.      flag = 1;
  75.      while (flag)
  76.      {
  77.           flag = 0;
  78.           setmem(buffer, MAXCHR, NULL);               /* clear buffer  */
  79.           if ((stats = read(f1, buffer, MAXCHR)) > 0) /* read blk from file */
  80.           {
  81.                fprintf(f2, "%05ld   ", countr);        /* print char count */ 
  82.                countr += MAXCHR;
  83.                flag = 1;
  84.                
  85.                for (x=0; x <= (MAXCHR-1); x++)
  86.                {
  87.                     fprintf(f2, "%02x", buffer[x]);  /* print hex value */
  88.  
  89. /****** change any special characters to SPACE for printing *****************/
  90.  
  91.                     if (buffer[x] < 32 || buffer[x] > 128)
  92.                          buffer[x] = ' ';    /* get rid of unprintables */
  93.                     
  94.                     if ((loopx +=1) == 5)
  95.                     {
  96.                          fprintf(f2, " ");            /* 5 at a time */
  97.                          loopx = 0;
  98.                     }
  99.                }
  100.                fprintf(f2, "*");             /* print translated characters */
  101.                for (x=0; x <= (MAXCHR-1); x++)
  102.                     fprintf(f2, "%c", buffer[x]);
  103.                fprintf(f2, "*\n");
  104.                if ((linecnt += 1) == 5)
  105.                {
  106.                     fprintf(f2, "\n");       /* skip 1 after every 5 lines */
  107.                     linecnt = 0;
  108.                }
  109.           }
  110.      }
  111.      fprintf(f2, "\x1BP\x0C");     /* set back to normal & do forms feed */
  112.      fflush(f2);
  113.      fclose(f2);
  114. }
  115.